#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;

int main(int argc, char** argv) {
    // 10-10
    cv::Mat matLowVariance(512, 512, CV_8U, cv::Scalar(0)), temp;
    cv::RNG rng = cv::theRNG();
    rng.fill(matLowVariance, cv::RNG::UNIFORM, 0 , 30);

    // lines
    cv::line(matLowVariance, cv::Point(256,256), cv::Point(256, 256-100),cv::Scalar(255), 1);
    cv::line(matLowVariance, cv::Point(256,256), cv::Point(256+100, 256+100),cv::Scalar(255), 1);
    cv::line(matLowVariance, cv::Point(256,256), cv::Point(256+100, 256),cv::Scalar(255), 1);
    cv::line(matLowVariance, cv::Point(256,256), cv::Point(256+100, 256-100),cv::Scalar(255), 1);
    cv::line(matLowVariance, cv::Point(256,256), cv::Point(256, 256+100),cv::Scalar(255), 1);
    cv::line(matLowVariance, cv::Point(256,256), cv::Point(256-100, 256+100),cv::Scalar(255), 1);
    cv::line(matLowVariance, cv::Point(256,256), cv::Point(256-100, 256),cv::Scalar(255), 1);
    cv::line(matLowVariance, cv::Point(256,256), cv::Point(256-100, 256-100),cv::Scalar(255), 1);
    cv::imshow("a wheel of lines", matLowVariance);
    cv::bilateralFilter(matLowVariance, temp, 5, 10.0, 2.0);
    cv::imshow("bilateral", temp);


    cv::waitKey(0);
    return 0;
}